#include "Consultar_paciente.h"
#include <Pacientes/registro_mod_paciente.h>


Consultar_paciente::Consultar_paciente(QWidget *parent):VentanaConsulta(parent)
 {

     this->setWindowTitle("Consultar Pacientes");
     indice = 0;

     modeloConsulta->setTable("paciente");
     modeloConsulta->setRelation(7, QSqlRelation("patologia", "id_patologia", "descripcion"));
     modeloConsulta->setRelation(8, QSqlRelation("grupopoblacional", "id_grupopoblacional", "descripcion"));
     modeloConsulta->setHeaderData(1, Qt::Horizontal, "Cedula");
     modeloConsulta->setHeaderData(2, Qt::Horizontal, "RUC");
     modeloConsulta->setHeaderData(3, Qt::Horizontal, "Nombre");
     modeloConsulta->setHeaderData(4, Qt::Horizontal, "Apellido");
     modeloConsulta->setHeaderData(6, Qt::Horizontal, "Sexo");
     modeloConsulta->setHeaderData(7, Qt::Horizontal, "Patologia");
     modeloConsulta->setHeaderData(8, Qt::Horizontal, "Grupo");
     modeloConsulta->setHeaderData(9, Qt::Horizontal, "Direccion");
     modeloConsulta->setHeaderData(10, Qt::Horizontal, "Telefono");
     modeloConsulta->setHeaderData(11, Qt::Horizontal, "Direccion_Fac");
     modeloConsulta->setHeaderData(12, Qt::Horizontal, "Email");
     modeloConsulta->setHeaderData(13, Qt::Horizontal, "Fecha_Nac");
     modeloConsulta->select();

     filtro->setSourceModel(modeloConsulta);
     ui->tableView->setModel(filtro);
     QStringList lista;
     lista << "Nombre" << "Apellido" << "Cedula";
     ui->comboBuscarPor->addItems(lista);
     ui->tableView->setModel(filtro);

     ui->tableView->hideColumn(0);
     ui->tableView->hideColumn(5);
     ui->tableView->hideColumn(11);
     ui->tableView->hideColumn(14);

     filtro->beginDeclareFilter();
     filtro->setFilter(14, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
     filtro->endDeclareFilter();

}


void Consultar_paciente::on_registrar_clicked()
{

    Registro_mod_paciente *nuevo = new Registro_mod_paciente();
    nuevo->exec();
    modeloConsulta->select();
    delete nuevo;

}


void Consultar_paciente::on_eliminar_clicked()
{
    QModelIndexList indexes = obtenerIndicesSeleccionados(0);
    if(indexes.count() > 0) {
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);

        int id = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<Paciente> pacientes;

        Paciente *pac = pacientes.filter(QDjangoWhere("idpaciente", QDjangoWhere::Equals, id)).at(0);

     /* QMessageBox mensaje;
        mensaje.setInformativeText("Esta seguro de que desea dar de baja al paciente: " + pac->getNombre() + "?");
        mensaje.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
        mensaje.setIcon(QMessageBox::Question);

        int var = mensaje.exec();*/

        int var = cuadroMensaje("Confirmación de Baja","<p align=center>¿Desea dar de baja al paciente seleccionado: <b>"+pac->getNombre()+"?</b></p>", "pregunta");

        if(var == QMessageBox::Ok){

          pac->setEstado("inactivo");
          pac->save();
          delete pac;
          modeloConsulta->select();

         }

    }
    else{

        QMessageBox mensaje;
        mensaje.setText("<p><b>Debe seleccionar un Paciente</b></p>");
        mensaje.setIcon(QMessageBox::Information);
        mensaje.exec();

    }
}


void Consultar_paciente::on_modificar_clicked()
{

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);
    if(indexes.count() == 1){
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);
        int idPac = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<Paciente> pacientes;
        Paciente *pa = pacientes.filter(QDjangoWhere("idpaciente", QDjangoWhere::Equals, idPac)).at(0);

        Registro_mod_paciente *cambios = new Registro_mod_paciente(this, pa);

        cambios->exec();
        modeloConsulta->select();       
        delete pa;
        delete cambios;
    }
    else{

        QMessageBox m;
        m.setText("Debe seleccionar un Paciente");
        m.setIcon(QMessageBox::Information);
        m.exec();

    }


}


void Consultar_paciente::on_textoBusqueda_textChanged(const QString &arg1)
{
    filtro->beginDeclareFilter();
    filtro->setFilter(indice, QVariant(arg1), Qt::DisplayRole, Qt::MatchContains);
    filtro->endDeclareFilter();
}

void Consultar_paciente::on_comboBuscarPor_currentTextChanged(const QString &arg1)
{
    if(arg1 == "Nombre"){

      indice = 3;

    }
    else if(arg1 == "Cedula") indice = 1;
    else if(arg1 == "Apellido") indice = 4;
}

void Consultar_paciente::on_refrescarTabla_clicked()
{
    for(int i = 0; i <ui->tableView->model()->columnCount(); i++)
        filtro->removeFilter(i);

    ui->comboBuscarPor->setCurrentIndex(0);
}

/*void Consultar_paciente::on_actualizar_clicked()
{
    ui->comboBuscarPor->setCurrentIndex(0);
    ui->textoBusqueda->clear();
    modeloConsulta->filter().clear();
    modeloConsulta->select();
}*/


void Consultar_paciente::on_checkActivos_toggled(bool checked)
{
    if(checked){

        filtro->beginDeclareFilter();
        filtro->setFilter(14, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
        filtro->endDeclareFilter();

    }
    else{

         filtro->removeFilter(14);

    }
}

void Consultar_paciente::on_tableView_doubleClicked()
{
     Consultar_paciente::on_modificar_clicked();
}


